<template>
  <div>
    <upload-excel
      :on-success="handleSuccess"
    />
  </div>
</template>

<script>
import { reqAddEmployeeBatch } from '@/api/employees'
export default {
  methods: {
    // 1. excel文件上传成功时调用
    handleSuccess({ header, results }) {
      // console.log(results)

      // console.log(this.$route.query)
      // 处理员工的批量上传
      if (this.$route.query.type === 'user') {
        this.handleEmployeesBatch(results)
      }

      if (this.$route.query.type === 'social') {
        // 处理社保的批量导入
      }

      if (this.$route.query.type === 'money') {
        // 处理薪资的批量导入
      }
    },

    // 3. 批量处理员工的excel导入上传
    async handleEmployeesBatch(results) {
      // 1.1 中英文对照表
      const userRelations = {
        '入职日期': 'timeOfEntry',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber'
      }

      // 1.2 遍历数据数组转化
      const dataArr = []
      results.forEach(item => {
        const obj = {}
        for (const key in item) {
          // 根据中文键取出英文键
          const englishKey = userRelations[key]

          // 判断: 只要是日期的要特殊处理
          // if (englishKey === 'timeOfEntry' || englishKey === 'correctionTime') {
          if (['timeOfEntry', 'correctionTime'].includes(englishKey)) {
            obj[englishKey] = this.formatExcelDate(item[key], '-')
            // console.log(obj[englishKey])
          } else {
            // 生成新对象
            obj[englishKey] = item[key]
          }
        }
        dataArr.push(obj)
      })

      // console.log(dataArr)

      // 1.3 发起网络请求
      const res = await reqAddEmployeeBatch(dataArr)
      this.$message.success(res.message)
      // this.$router.push('/employees')
      this.$router.back()
    },

    // 2. 把excel中的日期格式的数据转成正常的年月日
    formatExcelDate(numb, format) {
      const time = new Date(numb * 24 * 3600000 + 1) // 毫秒
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() - 1 + ''
      if (format && format.length === 1) {
        return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date)
      }
      return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
    }
  }
}
</script>

<style>

</style>
